/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Validador;

import Beans.Agenda;
import Beans.Horario;
import Beans.Jogo;
import Beans.Usuario;
import Daos.AgendaDao;
import Daos.JogoDao;

/**
 *
 * @author williambartko
 */
public class ValidaJogo {

    public ValidaJogo(Jogo jogo) {
        this.dataJogo = jogo.getDataJogo();
        this.horario = jogo.getHorario();
        this.usuario = jogo.getUsuario();

        codErro = 0;
        validadorGenerico = new ValidadorGenerico();
        inicializaMensagensCampo();//inicializa mensagens de erro

    }
    private String dataJogo;
    private Horario horario;
    private Usuario usuario;
    int codErro;
    private ValidadorGenerico validadorGenerico;
    private String[] mensagensCampos = new String[3];

    public boolean validaDataJogo() {
        if (!validadorGenerico.validaCampoVazioOuNulo(dataJogo)
                || !validadorGenerico.aceitaApenasDatasValidas(dataJogo)) {
            codErro = 1;
            setaMensagemsDeErro(codErro);
            return false;
        }
        return true;
    }

    public boolean validaHorario() {
        if (horario == null) {
            codErro = 2;
            setaMensagemsDeErro(codErro);
            return false;
        }
        return true;
    }

    public boolean validaUsuario() {
        if (usuario == null) {
            codErro = 3;
            setaMensagemsDeErro(codErro);
            return false;
        }
        return true;
    }

    private void inicializaMensagensCampo() {
        mensagensCampos[0] = "DataJogo valida";
        mensagensCampos[1] = "Horario valido";
        mensagensCampos[2] = "Usuario valido";

    }

    public String[] getMensagensCampos() {

        return mensagensCampos;
    }

    private void setaMensagemsDeErro(int codErro) {
        switch (codErro) {
            case 1:
                mensagensCampos[0] = "DataJogo inválida";
                break;
            case 2:
                mensagensCampos[1] = "Horario inválido";
                break;
            case 3:
                mensagensCampos[2] = "Horario inválido";
                break;
        }
    }

    public boolean validaTodosOsCampos() {
        if (validaDataJogo()
                && validaHorario()
                && validaUsuario()) {
            return true;
        } else {
            return false;
        }
    }

    public void gravarDadosNoBanco() {

        validaTodosOsCampos();
        if (codErro == 0) { //se nao detectar nenhum problema, salva no banco
            new JogoDao(new Jogo(dataJogo, usuario, horario)).persist();
            System.out.println(" Jogo Salvo no banco!");
        }
        setaMensagemsDeErro(codErro);//seta mensagem de erro
        System.out.println(codErro);
    }

    public Jogo retornaObjetoValidado() {
        return new Jogo(dataJogo, usuario, horario);
    }

    public static void main(String[] args) {


        ValidaJogo validaJogo = new ValidaJogo(new Jogo(null, null, null));



        validaJogo.gravarDadosNoBanco();

        for (int i = 0; i < validaJogo.getMensagensCampos().length; i++) {
            String campo[] = validaJogo.getMensagensCampos();
            System.out.println(campo[i]);
            System.out.println("===============================================");
        }

    }
}
